Method and Device for Facilitating Efficient Traversal of Natural Language Sequences

ABSTRACT

A computer system includes memory storing computer-executable instructions and a processor configured to execute the computer-executable instructions. The computer-executable instructions include building a questions table including multiple first questions and multiple potential requirements to which the first questions correspond, respectively. The computer-executable instructions include adding, to the questions table, one or more second questions, each of which correspond to at least two requirements from among the potential requirements. The computer-executable instructions include adding, to the questions table, for each second question among the one or more second questions, the at least two requirements to which the second question corresponds. The computer-executable instructions include determining a question, from among the first questions and the second questions, that corresponds to a highest number of potential requirements, and displaying the determined question to a user.

FIELD

The present disclosure relates to methods and devices for generatingcondensed data structures and more particularly to methods and devicesfor condensed data structures for efficient traversal of naturallanguage sequences.

BACKGROUND

When planning a project, such as developing a new product, orimplementing a new system, a requirements generation process may beconducted in order to determine which requirements, from among aplurality of existing potential requirements, are requirements of theproject. If a number of existing potential requirements is large,requirements generation may include asking several different people longlists of questions. Generating requirements for a project in such amanner may lead to inconsistent answers, and thus, ambiguity withrespect to the requirements of the project. The above-referenced issuesmay become more pronounced as a number of people working on a projectincreases. Thus, for projects involving large teams of people,requirements generation may be a particularly time-consuming and thechances of experiencing inconsistent results may be substantial.

The background description provided here is for the purpose of generallypresenting the context of the disclosure. Work of the presently namedinventors, to the extent it is described in this background section, aswell as aspects of the description that may not otherwise qualify asprior art at the time of filing, are neither expressly nor impliedlyadmitted as prior art against the present disclosure.

SUMMARY

A computer system includes memory storing computer-executableinstructions; and a processor configured to execute thecomputer-executable instructions. The computer-executable instructionsinclude: building a questions table including a plurality of firstquestions and a plurality of potential requirements to which theplurality of first questions correspond, respectively adding, to thequestions table, one or more second questions each of which correspondto at least two requirements from among the plurality of potentialrequirements, adding, to the questions table, for each second questionamong the one or more second questions, the at least two requirements towhich the second question corresponds, determining a question, fromamong the first questions and the second questions, that corresponds toa highest number of potential requirements, and displaying thedetermined question to a user.

In other features, the computer-executable instructions includereceiving an answer to the displayed question, and deleting the answeredquestion from the questions table.

In other features, the computer-executable instructions include deletingone or more requirements corresponding to the answered question from theentire questions table, and adding the one or more requirementscorresponding to the answered question to a requirements table.

In other features, the computer-executable instructions includedetermining one or more questions, from among the plurality of firstquestions and one or more second questions included in the questionstable, that correspond to no requirements included in the questionstable, and deleting the determined one or more questions from thequestions table.

In other features, the computer-executable instructions includedetermining whether the questions table is empty, and in response todetermining that the questions table is empty, displaying therequirements table to the user.

In other features, the computer-executable instructions includedetermining whether the questions table is empty, and in response todetermining that the questions table is not empty, determining a nextquestion, from among questions remaining in the questions table, thatcorresponds to a highest number of potential requirements, anddisplaying the determined next question to the user.

In other features, the computer-executable instructions includereceiving an answer to the displayed next question, and deleting theanswered next question from the questions table.

A requirements generation method includes building a questions tableincluding a plurality of first questions and a plurality of potentialrequirements to which the plurality of first questions correspond,respectively. In other features, the requirements generation methodincludes adding, to the questions table, one or more second questionseach of which correspond to at least two requirements from among theplurality of potential requirements. In other features, the requirementsgeneration method includes adding, to the questions table, for eachsecond question among the one or more second questions, the at least tworequirements to which the second question corresponds. In otherfeatures, the requirements generation method includes determining aquestion, from among the first questions and the second questions, thatcorresponds to a highest number of potential requirements. In otherfeatures, the requirements generation method includes displaying thedetermined question to a user.

In other features, the requirements generation method includes receivingan answer to the displayed question; and deleting the answered questionfrom the questions table.

In other features, the requirements generation method includes deletingone or more requirements corresponding to the answered question from theentire questions table; and adding the one or more requirementscorresponding to the answered question to a requirements table.

In other features, the requirements generation method includesdetermining one or more questions, from among the plurality of firstquestions and one or more second questions included in the questionstable, that correspond to no requirements included in the questionstable; and deleting the determined one or more questions from thequestions table.

In other features, the requirements generation method includesdetermining whether the questions table is empty; and in response todetermining that the questions table is empty, displaying therequirements table to the user.

In other features, requirements generation method includes determiningwhether the questions table is empty, and in response to determiningthat the questions table is not empty, determining a next question, fromamong questions remaining in the questions table, that corresponds to ahighest number of potential requirements, and displaying the determinednext question to the user.

In other features, the requirements generation method includes receivingan answer to the displayed next question, and deleting the answered nextquestion from the questions table.

A non-transitory computer-readable medium stores computer-executableinstructions that, when executed by a processor, cause the processor toperform operations. The operations include building a questions tableincluding a plurality of first questions and a plurality of potentialrequirements to which the plurality of first questions correspond,respectively; and adding, to the questions table, one or more secondquestions each of which correspond to at least two requirements fromamong the plurality of potential requirements. The operations alsoinclude adding, to the questions table, for each second question amongthe one or more second questions, the at least two requirements to whichthe second question corresponds; and determining a question, from amongthe first questions and the second questions, that corresponds to ahighest number of potential requirements. The operations also includedisplaying the determined question to a user.

In other features, the computer-executable instructions include:receiving an answer to the displayed question, and deleting the answeredquestion from the questions table.

In other features, the computer-executable instructions include deletingone or more requirements corresponding to the answered question from theentire questions table; and adding the one or more requirementscorresponding to the answered question to a requirements table.

In other features, the computer-executable instructions includedetermining one or more questions, from among the plurality of firstquestions and one or more second questions included in the questionstable, that correspond to no requirements included in the questionstable; and deleting the determined one or more questions from thequestions table.

In other features, the computer-executable instructions includedetermining whether the questions table is empty; and in response todetermining that the questions table is empty, displaying therequirements table to the user.

In other features, the computer-executable instructions includedetermining whether the questions table is empty; and in response todetermining that the questions table is not empty, determining a nextquestion, from among questions remaining in the questions table, thatcorresponds to a highest number of potential requirements, anddisplaying the determined next question to the user.

Further areas of applicability of the present disclosure will becomeapparent from the detailed description, the claims, and the drawings.The detailed description and specific examples are intended for purposesof illustration only and are not intended to limit the scope of thedisclosure.

BRIEF DESCRIPTION OF THE DRAWINGS

The present disclosure will become more fully understood from thedetailed description and the accompanying drawings.

FIG. 1 is a functional block diagram of an example requirementsgeneration system according to the principles of the present disclosure.

FIG. 2 is a flowchart depicting an example requirements identificationprocess according to the principles of the present disclosure.

FIGS. 3A-3H illustrate examples of a questions table and a requirementstable at various stages of the example requirements identificationprocess of FIG. 2 according to the principles of the present disclosure.

In the drawings, reference numbers may be reused to identify similarand/or identical elements.

DETAILED DESCRIPTION

The present disclosure describes a requirements generation device andprocess that improve the performance of requirements generation systemby, for example, reducing a duration of requirement generationprocedures that are performed using the requirements generation system,and thus, reducing one or more of a power consumption and a processingload of the requirements generation system.

As is discussed in greater detail, the requirements generation deviceimplements a requirements identifying process that reduces a number ofquestions needed to identify which requirements, among a plurality ofexisting potential requirements, are requirements of a particularproject.

FIG. 1 illustrates a requirements generation system 100. Therequirements generation system 100 may include a requirements generationdevice 110 and a plurality of user devices 104 including first throughfourth user devices 104-1-104-4. The requirements generation device 110and the plurality of user devices 104 are capable of performing wiredand/or wireless communications with each other via communicationsnetwork 108. The communications network 108 may be any network capableof transmitting electronic data. Example of the communications network108 include, but are not limited to, a wireless communications networksuch as a cellular network or a WiFi network, a local area network(LAN), and the Internet.

According to at least one example embodiment of the inventive concepts,the requirements generation device 110 may include or be implemented byone or more circuits or circuitry (e.g., hardware) specificallystructured to carry out and/or control some or all of the operationsdescribed in the present disclosure as being performed by therequirements generation device 110 (or an element thereof). According toat least one example embodiment of the inventive concepts, therequirements generation device 110 may include or be implemented by amemory and one or more processors executing computer-readable code(e.g., software and/or firmware) that is stored in the memory andincludes instructions for causing the one or more processors to carryout and/or control some or all of the operations described in thepresent disclosure as being performed by the requirements generationdevice 110 (or an element thereof). According to at least one exampleembodiment of the inventive concepts, the requirements generation device110 may be implemented by, for example, a combination of theabove-referenced hardware and one or more processors executingcomputer-readable code.

The requirements generation device 110 may be, for example a desktopcomputer of a server. Each of the user devices 104 may each be, any oneof, for example, a laptop, a desktop computer, a smart phone, a tablet,a personal digital assistant, and an a wearable device.

The requirements generation device 110 may perform a requirementsgeneration function by supplying a plurality of requirement-relatedquestions to one or more subject matter experts (SMEs) associated with aparticular project. The requirements generation device 110 may receiveanswers to the supplied questions. For large projects, a number of SMEsinvolved may be great, and the SMEs may be located in different place.Thus, according to at least some example embodiments, SMEs may use userdevices such first through fourth user devices 104-1-104-4 of therequirements generation system 100 in order to receive questions from,and provide answers to, the requirements generation device 110. Peopleassociated with a project for which requirements are being generated mayuse the answers received by the requirements generation device 110 todetermine requirements of the project.

As a number of existing potential requirements associated with a projectincreases, a number of questions asked in order to determine therequirements of the project may increase as well. As number of questionsasked in order to determine the requirements of the project, a durationof use, an amount of power consumption and/or a computational burden ofthe requirements generation device 110 may increase as well.

FIG. 2 is a flowchart depicting an example requirements identificationprocess according to the principles of the present disclosure. As isdiscussed in greater detail below, when the requirements generationdevice 110 performs requirements generation in accordance with therequirements identification process of FIG. 2, a number of questionsneeded to determine requirements of project may become reduced.Accordingly, a duration of use, an amount of power consumption and/or acomputational burden of the requirements generation device 110 maybecome reduced as well.

Referring to FIG. 2, in operation 205, the requirements generationdevice 110 builds a questions table. The questions table includes, foreach of a plurality of existing potential requirements associated with aparticular project, a question that corresponds to the requirement.Accordingly, with respect to the questions included in the questionstable at operation 205, for each question, at least one answer to thatquestion (e.g., “Yes” or “No”) identifies the requirement correspondingto the question as a requirement of the project.

FIG. 3A illustrates an example state of a questions table 310 afteroperation 205. As is illustrated in FIG. 3A each of first through fifthquestions Q001-Q005 corresponds to at least one of a yes-conditionrequirement and a no-condition requirement. Yes-condition requirements(“Y_Requirements”) are each a requirement that is identified as arequirement of the project when an answer to the question correspondingto the yes-condition requirement is “yes.” No-condition requirements(“N_Requirements”) are each a requirement that is identified as arequirement of the project when an answer to the question correspondingto the no-condition requirement is “no.”

Returning to FIG. 2, in operation 210, the requirements generationdevice 110 adds, to the questions table, questions that correspond tomore than one requirement from among the plurality of existing potentialrequirements associated with the project. For example, according to atleast some example embodiments, in operation 210, the requirementsgeneration device 110 adds one or more questions that correspond to atleast two yes-condition requirements or at least two no-condition to thequestions table 310. For example, FIG. 3B illustrates an example stateof the questions table 310 after operation 210. As is shown in FIG. 3B,sixth and seventh questions Q006 and Q007 are added to the questionstable 310. Further, unlike first through fifth questions Q001-Q005,sixth question Q006 corresponds to two yes-condition requirements (i.e.,first requirement R001 and second requirement R002), and seventhquestion Q007 also corresponds to two yes-condition requirements (i.e.,second requirement R002 and fifth requirement R005).

Returning to FIG. 2, in operation 215, the requirements generationdevice 110 generates, for each question in the questions table 310, acount value indicating a total number of requirements to which thequestion corresponds. For example, FIG. 3C illustrates an example stateof a questions table 310 after operation 215. As is illustrated in FIG.3C, the questions table 310 include a “Count” value that indicates atotal number of requirements (i.e., yes-condition requirements andno-condition requirements).

Returning to FIG. 2, in operation 220, the requirements generationdevice 110 displays the question having the highest count value to auser. For example, if the requirements generation device 110 isperforming a requirements generation operation with a SME located inproximity of the requirements generation device 110, the requirementsgeneration device 110 may display the question having the highest countvalue to the SME via a display (e.g., display panel or monitor) of therequirements generation device 110. Further, if, for example therequirements generation device 110 is performing a requirementsgeneration operation with the SME and the SME is communicating with therequirements generation device 110 via one of first through fourth usersdevices 104-1-104-4, the requirements generation device 110 may causethe user device being used by the SME to display the question having thehighest count value to the SME.

As is illustrated in FIG. 3C, the fifth and sixth questions Q005 andQ006 are tied for highest count value. Thus, according to at least someexample embodiments, the fifth question Q005 is determined, by therequirements generation device 110, to be the question having thehighest count value in operation 220 because the fifth question Q005 isin front of the sixth question Q006, as is illustrated in FIG. 3C.

In operation 225, the requirements generation device 110 receives ananswer, from the SME, to the displayed question. According to at leastsome example embodiments, the answer may be “yes” or “no.”

In operation 230, the requirements generation device 110 determineswhether the answer received in operation 225 is “yes.” If therequirements generation device 110 determines that the answer receivedin operation 225 was “yes,” the requirements generation device 110proceeds to operation 235.

In operation 235, the requirements generation device 110 adds theanswered question and the corresponding yes-condition requirements to arequirements table, deletes the answered question, and deletes anyyes-condition requirements or no-condition requirements that correspondto the answered question from the entire table. For example, inoperation 235, the requirements generation device 110 may walk theentire questions table 310, delete every instance in the questions table310 of each yes-condition requirement that corresponds to the questionanswered in operation 225, and delete every instance in the questionstable 310 of each no-condition requirement that corresponds to thequestion answered in operation 225.

In various implementations, deletion may be replaced with tagging. Forexample, a single bit may be associated with each question; when thequestion is added to the requirements table, the bit associated with theexisting question can be set to indicate that the question is answered.Then, instead of checking whether the table of questions is empty, acheck can be performed to see that all of the bits are set. Similarly,each yes-condition requirement and no-condition requirement may have anassociated bit that can be set to indicate completion rather thanactually performing a deletion.

In various other implementations, the underlying data structure for oneor more tables may implement a row deletion using a flag for each row,an index of deleted rows, etc. In these implementations, the datastructure represents the row as having been deleted even though the datafor that row is not physically removed. Instead, there may be a periodicoperation, such as garbage collection, when rows marked for deletion areactually removed—for example, by freeing the memory used by the deletedrows or by overwriting the deleted rows with non-deleted rows.

Returning to operation 230, if, in operation 230, the requirementsgeneration device 110 determines that the answer received in operation225 was not “yes,” the requirements generation device 110 proceeds tooperation 240.

In operation 240, the requirements generation device 110 adds theanswered question and the corresponding no-condition requirements to therequirements table, deletes the answered question, and deletes anyyes-condition requirements or no-condition requirements that correspondto the answered question from the entire table. For example, inoperation 240, the requirements generation device 110 may walk theentire questions table 310, delete every instance in the questions table310 of each yes-condition requirement that corresponds to the questionanswered in operation 225, and delete every instance in the questionstable 310 of each no-condition requirement that corresponds to thequestion answered in operation 225.

In the example illustrated in FIGS. 3A-3G, the answer to sixth questionQ006 received during a first iteration of operation 225 was “yes,” andthus, operations 230 and 235 are performed. For example, FIG. 3Dillustrates an example state of a questions table 310 after operation235. As is illustrated in FIG. 3D, in accordance with operation 235, thesixth question Q6 is added to a requirements table 320 along with theyes-condition requirements corresponding to the sixth question Q6, firstrequirement R001 and second requirement R002. Further, in accordancewith operation 235, the sixth question Q6 is deleted from the questionstable 310; the yes-condition requirements corresponding to the sixthquestion Q6, first requirement R001 and second requirement R002, aredeleted from the entire questions table 310; and the no-conditionrequirement corresponding to the sixth question Q6, fifth requirementR005, is deleted from the entire questions table 310.

Returning to FIG. 2, after either one of operations 235 and 240, therequirements generation device 110 proceeds to operation 245.

In operation 245, the requirement generation device 110 removes, fromthe questions table 310, each question that corresponds to zerorequirements. Referring to FIG. 3D, after operation 235, the firstquestion Q001 corresponds to zero requirements because the solerequirement to which the first question Q001 corresponded, firstrequirement R001, is deleted in operation 235. Further, the fifthquestion Q005 corresponds to zero requirements because the solerequirement to which the fifth question Q005 corresponded, fifthrequirement R005, is deleted in operation 235. Thus, in operation 245,the requirements generation device 110 deletes the first question Q001and fifth question Q005 from the questions table 310. For example, FIG.3E illustrates an example state of a questions table 310 after operation245. As is illustrated in FIG. 3E, the first question Q001, the fifthquestion Q005, and the sixth question Q006 are no longer present in thequestions table 310.

After operation 245, the requirement generation device 110 proceeds tooperation 250 and determines whether the questions table 310 is empty.If the requirements generation device 110 determines that questionstable 310 is empty, the requirement generation device proceeds tooperation 255.

In operation 255, the requirement generation device 110 displays therequirements table 320 to the SME. For example, the requirementgeneration device 110 may display the requirements table 320 to the SMEvia a display (e.g., display panel or monitor) of the requirementgeneration device 110 or, if the SME is communicating with therequirement generation device via one of the first through fourth userdevice 140-1-140-4, the requirement generation device 110 may displaythe requirements table 320 to the SME by causing the user device beingused by the SME to display the requirements table 320.

Returning to operation 250, if, in operation 250, the requirementsgeneration device 110 determines that questions table 310 is not empty,the requirement generation device returns to operation 215.

In the example illustrated in FIGS. 3A-3G, the questions table 310 isnot empty. For example, as is illustrated in FIG. 3E, the questionstable 310 still includes questions. Thus, in accordance with operation250, the requirement generation device 110 proceeds to operation 215 forthe second time.

In operation 215, the requirements generation device 110 recalculatesthe count values of the questions in the questions table 310. In theexample illustrated in FIGS. 3A-3H, the count values for the secondquestion Q002 and the seventh question Q007 are both updated to thevalue “1” due to the previous deletions of the second and fifth questionQ002 and Q005 from the entire questions table 310. For example, FIG. 3Fillustrates an example state of a questions table 310 after operation215.

After operation 215, the requirements generation device 110 proceeds tooperation 220. In the example illustrated in FIGS. 3A-3H, the thirdquestion Q003 is determined to have the highest count value. Thus, inoperation 220, the third question Q003 is displayed to the SME.

In the example illustrated in FIGS. 3A-3H, the answer received for thethird question Q003 during the second iteration of operation 225 is“no.” Thus, in accordance with operation 230, the requirementsgeneration device 110 proceeds to operation 240. Further, in accordancewith operation 240, the requirements generation device 110 adds thethird question Q003 to the requirements table 320 along with theno-condition requirement corresponding to the third question Q003,fourth requirement R004. Further, in accordance with operation 240, therequirements generation device 110 deletes the third question Q003 fromthe questions table 310; and the requirements generation device 110deletes the no-condition requirement corresponding to the third questionQ003, fourth requirement R004, and the yes-condition requirementcorresponding to the third question Q003, third question R003, from theentire questions table 310. For example, FIG. 3G shows states of thequestions table 310 and the requirements table 320 operation 240. Afterthe second iteration of operation 225, the requirements generationdevice 110 proceeds to operation 245 for the second time.

As is shown in FIG. 3G, no requirements exist for any of the remainingquestions (i.e., the second question Q002, the fourth question Q004, andthe seventh question Q007). Thus, in accordance with the seconditeration of operation 245, the requirements generation device 110deletes the second question Q002, the fourth question Q004, and theseventh question Q007 from the questions table 310. For example, FIG. 3Hshows states of the questions table 310 and the requirements table 320after operation S245. After operation 245, the requirements generationdevice 110 proceeds to operation 250 for the second time.

As is illustrated by FIG. 3H, the questions table 310 is now empty.Accordingly, during the second iteration of operation 250, therequirements generation device 110 determines that the questions table310 is empty, and thus, the requirements generation device 110 proceedsto operation 255 and displays the requirements table 320 to the SME.

Accordingly, though there were originally five questions in thequestions table 310, before the fifth and sixth questions Q005 and Q006were added in operation 210, by using the requirements identificationprocess discussed above with reference to FIG. 5, only three questions(i.e., the sixth and third questions Q006 and Q003) were asked of theSME. This represents a 60% decrease in the total number of questionsasked.

Consequently, by performing requirements generation in accordance withthe requirements identification process discussed above with referenceto FIG. 2, the requirements generation device 110 may reduce the amountof time needed to perform requirements generation. Consequently, therequirements generation device 110 may improve the functioning of therequirements generation system 100 by reducing one or more of a durationof use, an amount of power consumption and/or a computational burden ofthe requirements generation system 100.

The foregoing description is merely illustrative in nature and is in noway intended to limit the disclosure, its application, or uses. Thebroad teachings of the disclosure can be implemented in a variety offorms. Therefore, while this disclosure includes particular examples,the true scope of the disclosure should not be so limited since othermodifications will become apparent upon a study of the drawings, thespecification, and the following claims. It should be understood thatone or more steps within a method may be executed in different order (orconcurrently) without altering the principles of the present disclosure.Further, although each of the embodiments is described above as havingcertain features, any one or more of those features described withrespect to any embodiment of the disclosure can be implemented in and/orcombined with features of any of the other embodiments, even if thatcombination is not explicitly described. In other words, the describedembodiments are not mutually exclusive, and permutations of one or moreembodiments with one another remain within the scope of this disclosure.

Spatial and functional relationships between elements (for example,between modules) are described using various terms, including“connected,” “engaged,” “interfaced,” and “coupled.” Unless explicitlydescribed as being “direct,” when a relationship between first andsecond elements is described in the above disclosure, that relationshipencompasses a direct relationship where no other intervening elementsare present between the first and second elements, and also an indirectrelationship where one or more intervening elements are present (eitherspatially or functionally) between the first and second elements. Asused herein, the phrase at least one of A, B, and C should be construedto mean a logical (A OR B OR C), using a non-exclusive logical OR, andshould not be construed to mean “at least one of A, at least one of B,and at least one of C.”

In the figures, the direction of an arrow, as indicated by thearrowhead, generally demonstrates the flow of information (such as dataor instructions) that is of interest to the illustration. For example,when element A and element B exchange a variety of information butinformation transmitted from element A to element B is relevant to theillustration, the arrow may point from element A to element B. Thisunidirectional arrow does not imply that no other information istransmitted from element B to element A. Further, for information sentfrom element A to element B, element B may send requests for, or receiptacknowledgements of, the information to element A. The term subset doesnot necessarily require a proper subset. In other words, a first subsetof a first set may be coextensive with (equal to) the first set.

In this application, including the definitions below, the term “module”or the term “controller” may be replaced with the term “circuit.” Theterm “module” may refer to, be part of, or include processor hardware(shared, dedicated, or group) that executes code and memory hardware(shared, dedicated, or group) that stores code executed by the processorhardware.

The module may include one or more interface circuits. In some examples,the interface circuit(s) may implement wired or wireless interfaces thatconnect to a local area network (LAN) or a wireless personal areanetwork (WPAN). Examples of a LAN are Institute of Electrical andElectronics Engineers (IEEE) Standard 802.11-2016 (also known as theWIFI wireless networking standard) and IEEE Standard 802.3-2015 (alsoknown as the ETHERNET wired networking standard). Examples of a WPAN areIEEE Standard 802.15.4 (including the ZIGBEE standard from the ZigBeeAlliance) and, from the Bluetooth Special Interest Group (SIG), theBLUETOOTH wireless networking standard (including Core Specificationversions 3.0, 4.0, 4.1, 4.2, 5.0, and 5.1 from the Bluetooth SIG).

The module may communicate with other modules using the interfacecircuit(s). Although the module may be depicted in the presentdisclosure as logically communicating directly with other modules, invarious implementations the module may actually communicate via acommunications system. The communications system includes physicaland/or virtual networking equipment such as hubs, switches, routers, andgateways. In some implementations, the communications system connects toor traverses a wide area network (WAN) such as the Internet. Forexample, the communications system may include multiple LANs connectedto each other over the Internet or point-to-point leased lines usingtechnologies including Multiprotocol Label Switching (MPLS) and virtualprivate networks (VPNs).

In various implementations, the functionality of the module may bedistributed among multiple modules that are connected via thecommunications system. For example, multiple modules may implement thesame functionality distributed by a load balancing system. In a furtherexample, the functionality of the module may be split between a server(also known as remote, or cloud) module and a client (or, user) module.

The term code, as used above, may include software, firmware, and/ormicrocode, and may refer to programs, routines, functions, classes, datastructures, and/or objects. Shared processor hardware encompasses asingle microprocessor that executes some or all code from multiplemodules. Group processor hardware encompasses a microprocessor that, incombination with additional microprocessors, executes some or all codefrom one or more modules. References to multiple microprocessorsencompass multiple microprocessors on discrete dies, multiplemicroprocessors on a single die, multiple cores of a singlemicroprocessor, multiple threads of a single microprocessor, or acombination of the above.

Shared memory hardware encompasses a single memory device that storessome or all code from multiple modules. Group memory hardwareencompasses a memory device that, in combination with other memorydevices, stores some or all code from one or more modules.

The term memory hardware is a subset of the term computer-readablemedium. The term computer-readable medium, as used herein, does notencompass transitory electrical or electromagnetic signals propagatingthrough a medium (such as on a carrier wave); the term computer-readablemedium is therefore considered tangible and non-transitory. Non-limitingexamples of a non-transitory computer-readable medium are nonvolatilememory devices (such as a flash memory device, an erasable programmableread-only memory device, or a mask read-only memory device), volatilememory devices (such as a static random access memory device or adynamic random access memory device), magnetic storage media (such as ananalog or digital magnetic tape or a hard disk drive), and opticalstorage media (such as a CD, a DVD, or a Blu-ray Disc).

The apparatuses and methods described in this application may bepartially or fully implemented by a special purpose computer created byconfiguring a general purpose computer to execute one or more particularfunctions embodied in computer programs. The functional blocks andflowchart elements described above serve as software specifications,which can be translated into the computer programs by the routine workof a skilled technician or programmer.

The computer programs include processor-executable instructions that arestored on at least one non-transitory computer-readable medium. Thecomputer programs may also include or rely on stored data. The computerprograms may encompass a basic input/output system (BIOS) that interactswith hardware of the special purpose computer, device drivers thatinteract with particular devices of the special purpose computer, one ormore operating systems, user applications, background services,background applications, etc.

The computer programs may include: (i) descriptive text to be parsed,such as HTML (hypertext markup language), XML (extensible markuplanguage), or JSON (JavaScript Object Notation), (ii) assembly code,(iii) object code generated from source code by a compiler, (iv) sourcecode for execution by an interpreter, (v) source code for compilationand execution by a just-in-time compiler, etc. As examples only, sourcecode may be written using syntax from languages including C, C++, C#,Objective-C, Swift, Haskell, Go, SQL, R, Lisp, Java®, Fortran, Perl,Pascal, Curl, OCaml, JavaScript®, HTML5 (Hypertext Markup Language 5threvision), Ada, ASP (Active Server Pages), PHP (PHP: HypertextPreprocessor), Scala, Eiffel, Smalltalk, Erlang, Ruby, Flash®, VisualBasic®, Lua, MATLAB, SIMULINK, and Python®.

What is claimed is:
 1. A computer system comprising: memory storingcomputer-executable instructions; and a processor configured to executethe computer-executable instructions, wherein the computer-executableinstructions include: building a questions table including a pluralityof first questions and a plurality of potential requirements to whichthe plurality of first questions correspond, respectively, adding, tothe questions table, one or more second questions each of whichcorrespond to at least two requirements from among the plurality ofpotential requirements, adding, to the questions table, for each secondquestion among the one or more second questions, the at least tworequirements to which the second question corresponds, determining aquestion, from among the first questions and the second questions, thatcorresponds to a highest number of potential requirements, anddisplaying the determined question to a user.
 2. The computer system ofclaim 1, wherein the computer-executable instructions include: receivingan answer to the displayed question, and deleting the answered questionfrom the questions table.
 3. The computer system of claim 2, wherein thecomputer-executable instructions include: deleting one or morerequirements corresponding to the answered question from the entirequestions table, and adding the one or more requirements correspondingto the answered question to a requirements table.
 4. The computer systemof claim 3, wherein the computer-executable instructions include:determining one or more questions, from among the plurality of firstquestions and one or more second questions included in the questionstable, that correspond to no requirements included in the questionstable, and deleting the determined one or more questions from thequestions table.
 5. The computer system of claim 4, wherein thecomputer-executable instructions include: determining whether thequestions table is empty, and in response to determining that thequestions table is empty, displaying the requirements table to the user.6. The computer system of claim 4, wherein the computer-executableinstructions include: determining whether the questions table is empty,and in response to determining that the questions table is not empty,determining a next question, from among questions remaining in thequestions table, that corresponds to a highest number of potentialrequirements, and displaying the determined next question to the user.7. The computer system of claim 6, wherein the computer-executableinstructions include: receiving an answer to the displayed nextquestion, and deleting the answered next question from the questionstable.
 8. A requirements generation method comprising: building aquestions table including a plurality of first questions and a pluralityof potential requirements to which the plurality of first questionscorrespond, respectively; adding, to the questions table, one or moresecond questions each of which correspond to at least two requirementsfrom among the plurality of potential requirements; adding, to thequestions table, for each second question among the one or more secondquestions, the at least two requirements to which the second questioncorresponds; determining a question, from among the first questions andthe second questions, that corresponds to a highest number of potentialrequirements; and displaying the determined question to a user.
 9. Therequirements generation method of claim 8, further comprising: receivingan answer to the displayed question; and deleting the answered questionfrom the questions table.
 10. The requirements generation method ofclaim 9, further comprising: deleting one or more requirementscorresponding to the answered question from the entire questions table;and adding the one or more requirements corresponding to the answeredquestion to a requirements table.
 11. The requirements generation methodof claim 10, further comprising: determining one or more questions, fromamong the plurality of first questions and one or more second questionsincluded in the questions table, that correspond to no requirementsincluded in the questions table; and deleting the determined one or morequestions from the questions table.
 12. The requirements generationmethod of claim 11, further comprising: determining whether thequestions table is empty; and in response to determining that thequestions table is empty, displaying the requirements table to the user.13. The requirements generation method of claim 11, further comprising:determining whether the questions table is empty; and in response todetermining that the questions table is not empty, determining a nextquestion, from among questions remaining in the questions table, thatcorresponds to a highest number of potential requirements, anddisplaying the determined next question to the user.
 14. Therequirements generation method of claim 13, further comprising:receiving an answer to the displayed next question; and deleting theanswered next question from the questions table.
 15. A non-transitorycomputer-readable medium storing computer-executable instructions that,when executed by a processor, cause the processor to perform operationsincluding: building a questions table including a plurality of firstquestions and a plurality of potential requirements to which theplurality of first questions correspond, respectively; adding, to thequestions table, one or more second questions each of which correspondto at least two requirements from among the plurality of potentialrequirements; adding, to the questions table, for each second questionamong the one or more second questions, the at least two requirements towhich the second question corresponds; determining a question, fromamong the first questions and the second questions, that corresponds toa highest number of potential requirements; and displaying thedetermined question to a user.
 16. The non-transitory computer-readablemedium of claim 15, wherein the computer-executable instructionsinclude: receiving an answer to the displayed question; and deleting theanswered question from the questions table.
 17. The non-transitorycomputer-readable medium of claim 16, wherein the computer-executableinstructions include: deleting one or more requirements corresponding tothe answered question from the entire questions table; and adding theone or more requirements corresponding to the answered question to arequirements table.
 18. The non-transitory computer-readable medium ofclaim 17, wherein the computer-executable instructions include:determining one or more questions, from among the plurality of firstquestions and one or more second questions included in the questionstable, that correspond to no requirements included in the questionstable; and deleting the determined one or more questions from thequestions table.
 19. The non-transitory computer-readable medium ofclaim 18, wherein the computer-executable instructions include:determining whether the questions table is empty; and in response todetermining that the questions table is empty, displaying therequirements table to the user.
 20. The non-transitory computer-readablemedium of claim 18, wherein the computer-executable instructionsinclude: determining whether the questions table is empty; and inresponse to determining that the questions table is not empty,determining a next question, from among questions remaining in thequestions table, that corresponds to a highest number of potentialrequirements, and displaying the determined next question to the user.